package com.boge.study.test.arithmetic;

/**
 * 编写一个截取字符串的函数，输入为一个字符串和字节数，输出为按字节截取的字符串，但要保证汉字不被截取半个，
 * 如“我ABC”，4，应该截取“我AB”，输入“我ABC汉DEF”，6，应该输出“我ABC”，而不是“我ABC+汉的半个”
 * @author Administrator
 *
 */
public class SplitString {
	
	public static void main(String[] args) {
		String str = subStr("我09AZaz好的", 11);
		System.out.println(str);
	}
	
	public static String subStr(String str, int len) {
		byte[] buf = str.getBytes();
		if (buf.length < len) {
			return "超出长度，不能截取";
		}
		int num = trimGBK(buf, len);
		str = str.substring(0, num);
		return str;
	}
	
	/**
	 * 获取需要截取的长度
	 * @param buf
	 * @param len
	 * @return
	 */
	private static int trimGBK(byte[] buf, int len) {
		int num = 0;
		boolean bChineseFirstHalf = false;
		for (int i = 0; i < len; i++) {
			System.out.println(buf[i]);
			if (buf[i] < 0 && !bChineseFirstHalf) {
				bChineseFirstHalf = true;
			} else {
				num ++;
				bChineseFirstHalf = false;
			}
		}
		return num;
	}
	
}
